from flask import Flask, request, jsonify
from flask_cors import CORS
import time

# 1. 初始化Flask应用
app = Flask(__name__)
# 2. 配置CORS，允许所有来源的请求，这对于开发很方便
CORS(app)

# 模拟一个图片数据库
# 在真实应用中，这里可能会调用图片API或查询数据库
FAKE_IMAGE_DB = {
    "巴黎": ["../images/paris1.jpg", "../images/paris2.jpg"],
    "敦煌莫高窟": ["../images/dunhuang1.jpg", "../images/dunhuang2.jpg"],
    "东京": ["../images/tokyo1.jpg"],
    "默认": ["../images/not_found.jpg"]
}

# 3. 创建一个路由(Route)来接收前端的请求
# @app.route(URL, methods=[...])
# URL: 必须和前端fetch请求的URL一致
# methods=['POST']: 指定这个路由只接受POST请求
@app.route('/process_location', methods=['POST'])
def handle_location_data():
    """
    处理前端发送过来的地点数据
    """
    print("--- 收到来自前端的请求 ---")
    
    # 4. 从请求中获取JSON数据
    # request.is_json 会检查请求头 Content-Type 是否为 'application/json'
    if not request.is_json:
        return jsonify({"error": "请求格式必须是JSON"}), 400 # 返回400错误码

    data = request.get_json()
    
    # 5. 从JSON数据中提取 'location' 字段
    location_name = data.get('location')
    
    if not location_name:
        return jsonify({"error": "请求中缺少 'location' 字段"}), 400

    print(f"后端成功获取到前端输入的文本: 【{location_name}】")
    
    # --- 在这里可以执行你的后端逻辑 ---
    # 例如：调用AI模型、查询数据库、与硬件交互等
    # 这里我们只是模拟查找图片
    
    # 模拟处理延迟
    time.sleep(1) 
    
    # 根据地名查找图片
    image_urls = FAKE_IMAGE_DB.get(location_name, FAKE_IMAGE_DB["默认"])

    # 6. 准备要返回给前端的数据
    response_data = {
        "message": f"成功处理地点: {location_name}",
        "received_data": data, # 把收到的数据也一并返回，方便调试
        "images": image_urls   # 返回找到的图片URL
    }
    
    # 7. 将Python字典转换为JSON格式并返回给前端
    # Flask的jsonify会自动设置Content-Type为application/json
    return jsonify(response_data)


# 8. 启动服务器
if __name__ == '__main__':
    # host='0.0.0.0' 让服务器可以被局域网内的其他设备访问
    # debug=True 开启调试模式，代码修改后服务器会自动重启
    app.run(host='0.0.0.0', port=5000, debug=True)
    